package com.greydawn.AbstractFactoryPattern;

/**
 * @Author: zhongwr
 * @Create: 2021/12/6 23:12
 * @Version 1.0
 * @Description: 测试抽象工厂
 * 优点：当一个产品族中的多个对象被设计成一起工作时，它能保证客户端始终只使用同一个产品族中的对象。
 * 缺点：产品族扩展非常困难，要增加一个系列的某一产品，既要在抽象的 Creator 里加代码，又要在具体的里面加代码。
 */
public class AbstractFactoryTest {

    public static void main(String[] args) {

        AbstractFactory shapeFactory = FactoryProducer.getFactory("shape");

        AbstractFactory colorFactory = FactoryProducer.getFactory("color");

        Shape circle = shapeFactory.getShape("circle");
        Color red = colorFactory.getColor("red");
        circle.draw();
        red.fill();

        Shape rectangle = shapeFactory.getShape("Rectangle");
        Color blue = colorFactory.getColor("blue");
        rectangle.draw();
        blue.fill();

    }

}
